昨天用 LangSmith 跑完一輪評估,分數都出來了。
但有一個問題一直沒解決:評估器也是 AI,它判得準不準?
用 LLM 當裁判,就得先驗證裁判。
這篇先講第一件事:怎麼量出評估器準不準。
因為 評估器本身也可能判錯:
| 評估器判錯的方向 | 會發生什麼 | 後果 |
|---|---|---|
| 放水:爛回答給高分 | 有問題的回答被判 PASS | 假綠燈,問題流到使用者手上 |
| 太嚴:好回答給低分 | 沒問題的回答被判 FAIL | 假紅燈,大家開始不信任評估結果 |
快速了解關鍵名詞:
| 縮寫 | 全名 | 白話 |
|---|---|---|
| TP | True Positive(真陽性) | 評估器說 Pass,說對了:人工也說 Pass |
| FP | False Positive(偽陽性) | 評估器說 Pass,說錯了:人工其實說 Fail → 放水 |
| FN | False Negative(偽陰性) | 評估器說 Fail,說錯了:人工其實說 Pass → 誤殺 |
| TN | True Negative(真陰性) | 評估器說 Fail,說對了:人工也說 Fail |
👉(這就像快篩。快篩陽性但其實沒生病是 FP,快篩陰性但其實有生病是 FN。)
要算 Precision、Recall、F1,必須滿足兩個條件:
LLM 評估器給的是 0.85、0.6 這種連續分數,不能直接拿來算。
做法是:先依門檻把評估器的分數轉成 Pass / Fail,再跟人工標註的 Pass / Fail 比對。
拿評估器的判斷跟人工標註比對,會出現四種結果:
| 人工說 Pass | 人工說 Fail | |
|---|---|---|
| 評估器說 Pass | TP:判對了 ✅ | FP:放水 ❌ |
| 評估器說 Fail | FN:誤殺 ❌ | TN:判對了 ✅ |
這四個縮寫拆開來看就不難懂:後面的 P / N 是「評估器說什麼」,前面的 T / F 是「它說對了沒有」。
| 指標 | 公式 | 低的時候代表 |
|---|---|---|
| Precision(精確率) | TP / (TP + FP) | 評估器放水,假綠燈多 |
| Recall(召回率) | TP / (TP + FN) | 評估器太嚴,好回答被誤殺 |
| F1 Score | 2 × Precision × Recall / (Precision + Recall) | 至少有一邊特別差 |
100 筆客服回答,人工標註:60 筆 Pass,40 筆 Fail
評估器的判斷(分數 ≥ 0.9 視為 Pass):
├─ 判 60 筆 Pass
│ ├─ 48 筆人工也說 Pass ✅(TP)
│ └─ 12 筆人工說 Fail ❌(FP,放水)
│
└─ 判 40 筆 Fail
├─ 28 筆人工也說 Fail ✅(TN)
└─ 12 筆人工說 Pass ❌(FN,誤殺)
Precision = 48 / 60 = 80% → 評估器說 Pass 的,有 20% 其實該 Fail
Recall = 48 / 60 = 80% → 真正該 Pass 的,有 20% 被誤殺
F1 ≈ 80%
門檻調嚴,放水變少(Precision 上升),但誤殺變多(Recall 下降);調鬆則相反。
F1 會懲罰極端的情況:
情況 A:P = 0.90、R = 0.80 → F1 ≈ 0.85 ← 最均衡
情況 B:P = 0.95、R = 0.50 → F1 ≈ 0.66 ← 很少放水,但誤殺一大堆
情況 C:P = 0.50、R = 0.95 → F1 ≈ 0.66 ← 幾乎不誤殺,但一半在放水
| 角色 | 最在乎 | 為什麼 |
|---|---|---|
| PM | Precision | 使用者看到「判定沒問題」的內容,應該真的沒問題,關係到產品信任度 |
| QA | Recall | 職責是找出所有問題,漏掉的問題會直接流到使用者手上 |
| RD | F1 | 要在兩者之間找平衡,調整判斷門檻 |
⚠️ 看 Precision、Recall 之前,先確認團隊把什麼當作「正向(Positive)」:是「好回答」還是「有問題的回答」?
上面的例子以「Pass」為正向;如果把「有問題」當正向,QA 在乎的「不漏掉問題」就會對應到 Recall。定義不同,同一個指標的意思就會反過來,這也是團隊要先講好的規範。